package com.rd.student.wulian.wanggaobo.day0731;

import java.util.Arrays;
import java.util.Scanner;

public class TestRandom {
    public static void main(String[] args) {
        String all ="郑成祥、王博、孙文卓、郑睿娴、王高博、李春泉、张睿、王星凯、柏云耀、高艺铭、周子贺、杜航、高晨曦、张思韬、孙昊、方周、郭佳宝、姜万里、李宏鸣、薛志鑫、王海鑫、夏银银、吴俊豪、王向阳、徐铭泽、张世煊、才雨鑫、孙国伟、秦嘉林、王岩博、石睿、杜雨坤、黄奕鸣、金洪宇、李鑫、王宇芳、苏岩";
        String[] allArr = all.split("、");
        System.out.println(allArr.length);
        for (int i = 0; i < allArr.length; i++) {
            System.out.println(allArr[i]);
        }

        //随机n个
        //Math.Random()
        //Random
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要随机的人数：");
        int n = sc.nextInt();

        int len = allArr.length;
        for (int i = 0; i < n; i++) {
            int index = (int)(Math.random()*len);
            System.out.println(allArr[index]);
        }
        //如果再去重
        //①数组去重
        //可以选择两种方式：1、对随机的引索去重 2、对随机后取出的元素去重
        int[] indexArr = new int [len];
//        //对于引索去重的方法
//        //n = 5如果需要随机5次
//        //indexArr = {2,3,7}
//        //当随机出新的引索时 6
//
//        //随机出来的索引
//        int cnt = 0;
//        for (int i = 0; i < n; i++) {
//            int index = (int)(Math.random()*len);
//            boolean flag = false;
//            for (int j = 0; j < cnt; j++) {
//                if(index == indexArr[j]){
//                    flag = true;
//                    break;
//                }
//            }
//            if (!flag){
//                indexArr[cnt] = index;
//                cnt++;
//            }
//            if(flag){
//                i--;
//                continue;
//            }
//            System.out.println(allArr[index]);
//        }
        //数组去重的更好办法
        //allArr = {}  [0,36]
        //indexArr = {} 37个0 37个-1
        //2   indexArr[2] = 2

        //用数组来记录已经出现过的引索
        //indexArr = {2,3}
        //6 {2,3,6}  如果出现重复了 把随机的次数减1  代表要重新随机一次

        //能不能不通过遍历数组的方式 来判断某个元素是否出现过
        //indexArr = {-1,-1,-1,-1} 37个-1
        //indexArr = {-1,2,-1,3}
        //6 indexArr[6]
        int [] indexArr1 = new int [len];
        for (int i = 0; i < indexArr1.length; i++) {
            indexArr1[i] = -1;
        }
        System.out.println(Arrays.toString(indexArr1));
        for (int i = 0; i < n; i++) {


        //一定是[0,36]在indexArr1的索引范围内
        //可以通过数组索引来记录一个值是否出现过 而不再使用本身的元素
        int random = (int)(Math.random()*len);
        if(indexArr1[random] == -1){
            //代表random没有出现过
            indexArr1[random] = random;
            System.out.println();
        }
        else {
            i--;
        }
        }
    }
}
